package com.jiangyao.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jiangyao.model.dto.ClassInfoDto;
import com.jiangyao.model.dto.ClassUserDto;
import com.jiangyao.model.dto.backend.ClassUserAddDTO;
import com.jiangyao.model.dto.backend.ClassUserDTO;
import com.jiangyao.model.dto.backend.ClassUserListPageDTO;
import com.jiangyao.model.entity.ClassUser;
import com.baomidou.mybatisplus.extension.service.IService;

import com.jiangyao.model.vo.ClassmateVo;
import com.jiangyao.model.vo.UserClassVo;
import com.jiangyao.model.vo.backend.ClassUserDetailVO;
import org.springframework.web.multipart.MultipartFile;


import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 班级成员信息 服务类
 * </p>
 *
 * @author xiangyan
 * @since 2020-08-13
 */
public interface ClassUserService extends IService<ClassUser> {

	List<UserClassVo> getWebUserClass();

    Boolean applyForOrg(ClassUserDto classUserDto);

	/**
	 * 下载成员导入模板
	 *
	 * @param response response
	 */
	void downloadImportTemplate(HttpServletResponse response);

	/**
	 * 组织、班级导入成员
	 *
	 * @param file 文件
	 */
	void importUser(MultipartFile file);

	/**
	 * 获取组织班级成员列表
	 *
	 * @param listPageDTO 列表请求参数DTO
	 * @return 结果
	 */
	Page<ClassUserDetailVO> getListPage(ClassUserListPageDTO listPageDTO);

	/**
	 * 编辑状态（启用、移除）
	 *
	 * @param classUserDTO 编辑状态DTO
	 */
	void editStatus(ClassUserDTO classUserDTO);

	/**
	 * 添加成员
	 *
	 * @param classUserAddDTO 添加成员DTO
	 */
	void addUser(ClassUserAddDTO classUserAddDTO);

    Integer getClassmateCount(ClassInfoDto classInfoDto);

	List<ClassmateVo> getClassmate(ClassInfoDto classInfoDto);
}
